Настройка unit-тестирования с PHPUnit и PhpStorm IDE
Unit-тестирование это хорошо. Много хороших статей написано о том как прекрасно это взять класс и для него написать юнит-тест. Позавчера вот Андрей Солнцев даже про расширение к TDD рассказывал — BDD. А большинство программистов по прежнему не используют.. просто потому что сложно даже настроить. Вот попробуем это для php сделать.
Прежде всего понадобится свой локально установленный php — я поставил последнюю 5.3.3 thread safe x86 версию. До этого я пробовал всякие WAMP, XAMPP, Apache2triad, Денвер.. и отсюда все проблемы которые далее возникли.
Ставим PEAR запустив в консольном режиме php с гигантским файликом установки go-pear.php — я его положил в папку с установленным php. Если у вас уже есть старенький PEAR, то pear.bat upgrade обновит его.
Установщик сам всё подкачает и распакует. У меня правда вылазили deprecation-ошибки и ошибки винды "CGI / FastCGI has stopped working" из-за параллельно существовавшего старого Apache2Triad пака. Пришлось его удалить и поменять путь к php (прямо в диалоге установки)
Теперь ставим библиотеку PHPUnit — ничего скачивать заранее не надо, PEAR подгрузит всё сам..
pear channel-discover pear.phpunit.de pear install phpunit/PHPUnit
Опять возникли ошибки из-за того что PHP_PEAR_INSTALL_DIR is not set correctly. Пришлось ставить вручную
set PHP_PEAR_INSTALL_DIR=C:Program Filesphppear set PHP_PEAR_BIN_DIR=C:Program Filesphppear set PHP_PEAR_PHP_BIN=C:Program Filesphpphp.exe
Оказывается PHPUnit хочет левые каналы используются из symphony-project.com... добавляем их и установка проходит в штатном режиме
Связываем PHPStorm
В детальном описании настройки всё идеально. А у меня при создании теста возникает ошибка об отсутствии файла E_WARNING: PHPUnit/Framework.php.
На форуме это объясняют путями к PEAR — IDE и у меня ругается при настройке путей к php на несовместимость с каким-то "оригинальным путём к php" который почему-то C:php5pear.. А всё потому что include_path не установлен из-за отсутсвия php.ini в C:Windows.[ [function.require]: Failed opening required 'PHPUnit/TextUI/TestRunner.php' in C:Program FilesZendZend Studio - 8.0.0pluginscom.zend.php.phpunit_8.0.0.v20101001-0100resourcesZendPHPUnit.php on line 87. Для этого переименуйте во что-нибудь PHPUnit из PEAR папки и скопируйте поставляемую в качестве плагина зендовскую phpunit на уровень выше.